// src/utils/request.ts
import axios from 'axios';

// 创建 axios 实例
const request = axios.create({
  baseURL: 'http://localhost:8080',
  // baseURL: 'https://leiqichao.cn:',
  timeout: 5000,
  responseType: 'json', // 默认 JSON 解析（非二进制请求适用）
});

// 请求拦截器
request.interceptors.request.use(
  (config) => {
    // 在发送请求之前做一些处理，例如添加 token
    const token = localStorage.getItem('token');
    if (token) {
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  (error) => {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);
request.interceptors.response.use(
  (response) => {
    // 非二进制请求才处理数据
    if (
      response.config.responseType === 'json' ||
      response.config.responseType === undefined
    ) {
      if (response.status >= 200 && response.status < 300) {
        return response.data; // ✅ 仅处理 JSON 数据
      } else {
        return Promise.reject(response);
      }
    } else {
      // 二进制请求直接返回完整响应
      return response; // ✅ 保留原始数据
    }
  },
  (error) => {
    // 对错误响应做处理
    if (error.response) {
      switch (error.response.status) {
        case 401:
          console.error('未授权，请登录');
          break;
        case 403:
          console.error('拒绝访问');
          break;
        case 404:
          console.error('请求的资源不存在');
          break;
        case 500:
          console.error('服务器内部错误');
          break;
        default:
          console.error('请求失败');
      }
    }
    return Promise.reject(error); // 返回 rejected 的 Promise
  }
);

export default request;